package com.parking.order.controller;


import cn.hutool.core.bean.BeanUtil;
import com.parking.common.core.model.PageInfo;
import com.parking.common.core.model.Result;
import com.parking.common.core.util.JwtUtil;
import com.parking.order.model.form.FindOrderLogsCertifiedForm;
import com.parking.order.model.form.FindOrderLogsPlatformForm;
import com.parking.order.model.param.FindOrderLogsParam;
import com.parking.order.service.IOrderLogsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

/**
 * <p>
 *  订单日志控制层
 * </p>
 *
 * @author 吴彦祖
 * @since 2023年11月28日
 */
@RestController
@Api(tags = "订单日志")
@RequestMapping("/orderLogs")
public class OrderLogsController {
    /**
     * 订单日志服务层
     * */
    @Autowired
    private IOrderLogsService orderLogsService;

    /**
     * 平台查询订单日志
     * 参数 平台token authorization
     *     开始时间 startTime
     *     结束时间 endTime
     *     订单编号 orderInfoNum
     *     日志人类型 logsPersonType
     *     日志人 logsUpdatePerson
     *     页数   pageNum
     *     每页大小 pageSize
     *
     * 返回 订单编号 orderInfoNum
     *      日志时间 logsUpdateTime
     *      日志人类型 logsPersonType
     *      日志人 logsUpdatePerson
     *      日志描述 orderLogsDescribe
     * */
    @GetMapping("/findOrderLogs.platform")
    @ApiOperation("平台查询订单日志")
    public Result<PageInfo> findOrderLogsPlatform(@Valid FindOrderLogsPlatformForm form, @RequestHeader String authorization) throws Exception {
        FindOrderLogsParam param = BeanUtil.toBean(form,FindOrderLogsParam.class);
        param.setPlatformId(JwtUtil.getPlatformId(authorization));
        PageInfo page = orderLogsService.findOrderLogs(param);
        return Result.getResult(PageInfo.class).setMessage("平台查询订单日志成功").setData(page);
    }

    /**
     * 物业查询订单日志
     * 参数 物业token authorization
     *     开始时间 startTime
     *     结束时间 endTime
     *     订单编号 orderInfoNum
     *     日志人类型 logsPersonType
     *     日志人 logsUpdatePerson
     *     页数   pageNum
     *     每页大小 pageSize
     *
     * 返回 订单编号 orderInfoNum
     *      日志时间 logsUpdateTime
     *      日志人类型 logsPersonType
     *      日志人 logsUpdatePerson
     *      日志描述 orderLogsDescribe
     * */
    @GetMapping("/findOrderLogs.certified")
    @ApiOperation("物业查询订单日志")
    public Result<PageInfo> findOrderLogsPlatform(@Valid FindOrderLogsCertifiedForm form, @RequestHeader String authorization) throws Exception {
        FindOrderLogsParam param = BeanUtil.toBean(form,FindOrderLogsParam.class);
        param.setCertifiedId(JwtUtil.getCertifiedAccountId(authorization));
        PageInfo page = orderLogsService.findOrderLogs(param);
        return Result.getResult(PageInfo.class).setMessage("物业查询订单日志成功").setData(page);
    }
}

